var addroleWin;

function addrole() {
	if (addroleWin) {
		addroleWin = null;
	}

	var addroleForm = new Ext.FormPanel({
				id : 'addroleForm',
				labelWidth : 75, // label settings here cascade unless
				// overridden
				frame : false,
				bodyStyle : 'padding:5px 5px 0',
				width : 350,
				defaults : {
					width : 230
				},
				defaultType : 'textfield',

				items : [{
							fieldLabel : '角色名称',
							id : 'rname',
							name : 'rname',
							emptyText : '请定义角色名称',
							allowBlank : false
						}, {
							fieldLabel : '唯一标识',
							id : 'rkey',
							name : 'rkey',
							emptyText : '请定义角色唯一标识',
							allowBlank : false
						}, {
							fieldLabel : '角色说明',
							xtype : 'textarea',
							id : 'rmemo',
							name : 'rmemo'
						}, {
							xtype : 'hidden',
							name : 'rrv',
							id : 'rrv',
							value : '1'
						}, {
							xtype : 'fieldset',
							id : 'rroleset',
							checkboxToggle : true,
							onCheckClick : function() {
								clickRoleSet('rroleset', 'vroleset');
							},
							title : '真实角色',
							autoHeight : true,
							defaultType : 'textfield',
							collapsed : false,
							width : 350,
							labelWidth : 65,
							animCollapse : true,
							defaults : {
								width : 230
							},
							items : [
									{
										fieldLabel : '组继承',
										xtype : 'checkbox',
										id : 'raccede1',
										name : 'raccede1'
									},
									{
										fieldLabel : '组继承',
										xtype : 'hidden',
										id : 'raccede',
										name : 'raccede',
										value : '0'
									},
									getGroupUserChkCombo('角色对象', 'objids',
											'objnames', 'objtypes', '', true),
									{
										xtype : 'hidden',
										id : 'objids',
										name : 'objids'
									}, {
										xtype : 'hidden',
										id : 'objnames',
										name : 'objnames'
									}, {
										xtype : 'hidden',
										id : 'objtypes',
										name : 'objtypes'
									}]
						}, {
							xtype : 'fieldset',
							id : 'vroleset',
							checkboxToggle : true,
							onCheckClick : function() {
								clickRoleSet('vroleset', 'rroleset');
							},
							title : '虚拟角色',
							autoHeight : true,
							defaultType : 'textfield',
							width : 350,
							labelWidth : 65,
							animCollapse : true,
							collapsed : true,
							defaults : {
								width : 230
							},
							items : [
									{
										xtype : 'hidden',
										name : 'rrvtype',
										value : 'U'
									},
									getWBComboStore('user-rating', '',
											'grating_', '对象级别', 'rrvrating',
											null, '0', true), {
										xtype : 'hidden',
										name : 'rrvrating',
										id : 'rrvrating',
										value : '0'
									}]
						}]
			});

	addroleWin = new Ext.Window({
				renderTo : Ext.getBody(),
				layout : 'fit',
				width : 400,
				height : 400,
				title : '角色定义',
				resizable : false,
				plain : true,
				modal : true,

				items : [addroleForm],

				buttons : [{
							id : 'roleAddButton',
							text : '提 交',
							handler : handleSaveRole
						}, {
							text : '关 闭',
							handler : function() {
								addroleWin.close();
								addroleWin = null;
							}
						}]
			});

	addroleWin.show(this);
}

function clickRoleSet(fset, sset) {
	// thizz[thizz.checkbox.dom.checked ? 'expand' : 'collapse']();
	if (Ext.getCmp(fset).checkbox.dom.checked) {
		Ext.getCmp(fset)['expand']();
		Ext.getCmp(sset)['collapse']();
	} else if (!Ext.getCmp(fset).checkbox.dom.checked) {
		Ext.getCmp(fset)['collapse']();
		Ext.getCmp(sset)['expand']();
	}
}

function handleSaveRole() {
	if (Ext.getCmp("addroleForm").getForm().isValid()) {

		if (Ext.getCmp("rroleset").checkbox.dom.checked
				&& Ext.getCmp("objids").getValue() == '') {
			Ext.Msg.alert('提示', '请选择角色对象！');
		} else if (Ext.getCmp("vroleset").checkbox.dom.checked
				&& Ext.getCmp("rrvrating").getValue() == '') {
			Ext.Msg.alert('提示', '请选择角色对象级别！');
		} else {
			if (Ext.getCmp("objids").getValue() != ''
					&& Ext.getCmp("objnames").getValue() != ''
					&& Ext.getCmp("objtypes").getValue() != '') {
				countRoleObjectItem(null, Ext.getCmp("objids").getValue(), Ext
								.getCmp("objnames").getValue(), Ext
								.getCmp("objtypes").getValue(), Ext
								.getCmp("addroleForm"));
			}

			if (Ext.getCmp("rroleset").checkbox.dom.checked) {
				Ext.getCmp("rrv").setValue('1');
			} else if (Ext.getCmp("vroleset").checkbox.dom.checked) {
				Ext.getCmp("rrv").setValue('0');
			}

			if (Ext.getCmp("raccede1").el.dom.checked) {
				Ext.getCmp("raccede").setValue('1');
			}

			Ext.getCmp("roleAddButton").setDisabled(true);

			Ext.MessageBox.wait('提交保存过程中...');

			Ext.getCmp("addroleForm").getForm().submit({
				url : context + '/system/role.do?method=save',
				method : "POST",
				success : function(form, action) {
					Ext.MessageBox.hide();
					Ext.getCmp("roleAddButton").setDisabled(false);
					Ext.MessageBox.confirm('提示', '已成功保存角色信息，要继续定义新的角色吗？',
							keepAddRole);
				},
				failure : function(form, action) {
					Ext.MessageBox.hide();
					Ext.getCmp("roleAddButton").setDisabled(false);
					if (action.result.errCode == '-1') {
						Ext.Msg.alert('提示', '提交保存角色信息发生错误！');
					} else if (action.result.errCode == '-2') {
						Ext.Msg.alert('提示', '角色唯一标识重复！');
					} else if (action.result.errCode == '-3') {
						Ext.Msg.alert('提示', '角色唯一标识不能为空！');
					} else {
						Ext.Msg.alert('提示', '未知的错误异常！');
					}
				}
			});
		}
	}
}

function keepAddRole(btn) {
	if (btn == 'yes') {
		addroleWin.close();
		addroleWin = null;
		addrole();
	} else {
		addroleWin.close();
		addroleWin = null;
	}

	reloadroleListStore();
}